package cn.iocoder.yudao.module.worker.service.clerkfans;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.worker.controller.admin.clerkfans.vo.*;
import cn.iocoder.yudao.module.worker.controller.app.clerkfans.vo.AppClerkFansPageReqVO;
import cn.iocoder.yudao.module.worker.controller.app.clerkfans.vo.AppClerkFansSaveReqVO;
import cn.iocoder.yudao.module.worker.dal.dataobject.clerkfans.ClerkFansDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 店员关注 Service 接口
 *
 * @author Jerry
 */
public interface ClerkFansService {

    /**
     * 创建店员关注
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createClerkFans(@Valid ClerkFansSaveReqVO createReqVO);

    /**
     * 更新店员关注
     *
     * @param updateReqVO 更新信息
     */
    void updateClerkFans(@Valid ClerkFansSaveReqVO updateReqVO);

    /**
     * 删除店员关注
     *
     * @param id 编号
     */
    void deleteClerkFans(Long id);

    /**
     * 获得店员关注
     *
     * @param id 编号
     * @return 店员关注
     */
    ClerkFansDO getClerkFans(Long id);

    /**
     * 获得店员关注分页
     *
     * @param pageReqVO 分页查询
     * @return 店员关注分页
     */
    PageResult<ClerkFansDO> getClerkFansPage(ClerkFansPageReqVO pageReqVO);

    /**
     * 创建店员关注
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createClerkFans(@Valid AppClerkFansSaveReqVO createReqVO);

    /**
     * 更新店员关注
     *
     * @param updateReqVO 更新信息
     */
    void updateClerkFans(@Valid AppClerkFansSaveReqVO updateReqVO);

    /**
     * 获得店员关注分页
     *
     * @param pageReqVO 分页查询
     * @return 店员关注分页
     */
    PageResult<ClerkFansDO> getClerkFansPage(AppClerkFansPageReqVO pageReqVO);

    List<ClerkFansDO> getClerkFansList(Long userId, Set<Long> clerkIds);
}